home *** CD-ROM | disk | FTP | other *** search
- unit Uiform;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, Grids, DBGrids, DB, DBTables, Tabs,
- Scanners;
-
- type
- TProjectForm = class(TForm)
- AreaTabSet: TTabSet;
- ProjectDataSource: TDataSource;
- AreaTable: TTable;
- ProjectTable: TTable;
- ProjectDBGrid: TDBGrid;
- AreaDataSource: TDataSource;
- ProjectTableAREA_ID: TSmallintField;
- ProjectTablePROJECT_ID: TSmallintField;
- ProjectTablePROJECT_TITLE: TStringField;
- procedure FormCreate(Sender: TObject);
- procedure AreaTabSetChange(Sender: TObject; NewTab: Integer;
- var AllowChange: Boolean);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- ProjectForm: TProjectForm;
-
- implementation
-
- {$R *.DFM}
-
- procedure LoadTabsScannerAction( TheAreaTable: TTable ); far;
- begin
- ProjectForm.AreaTabSet.Tabs.Add(
- TheAreaTable.FieldByName( 'AREA_NAME' ).AsString
- );
- end;
-
- procedure TProjectForm.FormCreate(Sender: TObject);
- var
- AreaTableScanner: TTableActionScanner;
- begin
-
- { Create table scanner object on Area table. }
- AreaTableScanner := TTableActionScanner.Create(
- AreaTable,
- LoadTabsScannerAction
- );
- { Scan through area table and load area names into tabs. }
- AreaTableScanner.Execute;
- { Dispose of the scanner object. }
- AreaTableScanner.Free;
-
- { Make sure Area table and AreaTabSet are synchronized. }
- if AreaTabSet.Tabs.Count > 0 then
- begin
- { Area table is not empty. Tabs loaded by scanner.}
- AreaTabSet.TabIndex := 0;
- end;
-
- end;
-
- procedure TProjectForm.AreaTabSetChange(Sender: TObject; NewTab: Integer;
- var AllowChange: Boolean);
- begin
-
- if not AreaTable.FindKey( [ NewTab ] ) then
- AllowChange := False;
-
- end;
-
- end.
-